- web6047 - (2021/09/10(金) 現在、システム調整中のため、一部の表示がおかしいかもしれません)


[横幅 1024px以下]
管理人がこの時刻↓に聞いている音楽とその評価:
2024/04/28 日 21:19:49
伊藤賢治 _|_ サガ フロンティア オリジナル・サウンドトラック _|_ 針の城
Play list: 高評価
Genre: サウンドトラック
Good: 0
No Good: 0

There is no canvas.

web6047 2023年 9月

プログラミングやRPG(作るほう)が好きな人の日記

個人的な趣味(プログラミング、イラスト、電子回路)のページです。

日記を中心に、パソコン関係について、いろいろ細かく説明することがあります。

読んでいるときに、言葉の左下に   水色の・を発見したら、

そこにマウスカーソルを合わせたり、タッチすると、言葉の意味を表示します。


自己紹介: 自己紹介

48才、男、B型

電子機器を製造する工場で、派遣で働いています。

プログラミングが好きで小学校5年生のころからずっと続けています。

■趣味: プログラミング、ゲーム音楽を集めて聴く、イラストを描く、映画、アニメ、ガンプラ  (興味の強い順)

■将来の夢は5つくらい持っていますが、生きてる間に実現できそうにありません。


■私が使っているペンネーム(ハンドルネーム)は新しい順に

ペ ンネーム(ハンドルネーム) いつごろ 場 所
台形→三角形→平行四辺形
理由があってペンネームを何度か変えていて右端が現在です。
現在(多) Yahoo Japan
d_kawakawa 現在(少) どこでも
cookiepurinman、cookiepudingman、cookiepuddingman 現在(極少) Twitter
かわ、kawa 30年前 パソコン通信


■私への連絡手段:

ごくまれにしかツイートしませんが、私の twitter アカウントはこちらです。

https://twitter.com/cookiepudingman

何かメッセージをくれれば、返事すると思います。

返事がないときはメッセージに気付いていないんだと思います。そのときはすみません。


■管理人用:

Windows ケア 手順

タッチイベント チェック用

(Windows11)画面が黒くなったら、


自己紹介: 最近見ているアニメ

「呪術廻戦」(TVer再放送)


最近 ChatGPT と話した内容

電子機器組立て2級 暗記ツール … 国家検定の電子機器組立て2級の 暗記ツール(基板上配置)です。1級でも役立つと思います。

「3DCGの原理」による3DCGプログラミング … 3DCGを自分の計算でプログラムしましょう。


このサイトで最も興味を引く部分: (そのつもり)

最近、私は個人的に、「RPG のコマンドメニュー部分のプログラム」を、中高生向けに、ステップバイステップ方式で教えようとしています。

ステップ同士のプログラム上の変化をマーキングして表示したり、バルーンメッセージを使って説明を付けたりと、いろいろ工夫をしていますが、はっきり いってわかりにくいんじゃないかと思っています。

Mini-NAVIGATION
RPGメニューを作る1
基本のプログラムからはじめて、サブメニューを表示するまで
Step 1~8
RPGメニューを作る2(記事としては4)
メニューの項目に、付加情報(装備中のe記号や、店の価格)を表示。
Step 9、10、11
RPGメニューを作る3(記事としては5)
メニューの項目を段組表示する
Step 12、13


日記: 日記  (日記がこのサイトのメインコンテンツです。上の記事ほど新しい記事です) 


2023/9/27(水)

Google Bard(会話 AI)

ChatGPT から追い出された私

あははは

このあいだまで ChatGPT を好んで使っていましたが、私はアカウントを2回削除してしまい、もう私の電話番号では2度と ChatGPT のアカウントを作ることができなくなってしまいました。

ChatGPT ではセキュリティの関係で、ユーザーが予想しないような「まさか」のルールが存在しています。

このおかげで、私はもう2度と私の今の電話番号で ChatGPT を利用することができなくなってしまいました。

ローラ姫「そんな、ひどい…


そんな残念な私に、朗報が2つも入りました。


  1. Windows 11 バージョン 22H2 の「9/27(水) 配信」の新機能では、「Windows コパイロット」という「OS に搭載された会話 AI」が利用できるようになりました。
    https://ja.wikipedia.org/wiki/Windows_Copilot(Wikipedia による説明)

    ▼Windows Copilot(会話 AI)を表示させ、質問をしているところ

    ※「Copilot」とは、「副操縦士」という意味だそうです。

  2. Google Bard が ChatGPT 並みに使える 会話 AI へと成長しました。
    https://bard.google.com/chat

    ▼Google Bard で質問をしているところ

    ▼吟遊詩人(Bard)

    (Adobe Firefly による AI 自動生成画像)
    ▼「しかし、彼は日本人」としたら…

    (Adobe Firefly による AI 自動生成画像)

    ※「Bard」とは、「吟遊詩人」という意味だそうです。「吟遊詩人」とは、 「中世ヨーロッパで、恋愛歌や民衆的な歌を歌いながら各地を遍歴した芸人」です。

これで、とりあえず、私は ChatGPT が無くてもやっていけるかな。。

Google Bard に聞いてみた。

私の RPG のプログラムの中で、

「マップ上のその地形は歩ける場所なのか、それとも歩けない場所なのか」

という区別をするために、「walkable(読み:ウォーカブル)という変数名で、その可否を行うようにプログラムしています。

この walkable という変数名が、その目的を表す名前として正しいのかどうか、Bard に聞くことにしました。


普通に英単語としての walkable の意味を聞いて、答えてくれただけですが、そのやり取りのあとに私が「ありがとう」と発言したことについて、AI に対して挨拶したり、「ありがとう」と発言することの意味を Bard に聞いてみました。(前にも ChatGPT に同じことを聞いたことがありました)

以下のリンクをクリックすると、私と Bard の会話内容を表示します。

チャット内容の公開リンク - 題名「AIへの敬意と信頼関係」

https://g.co/bard/share/59820021096a

私の発言と Bard の回答の組の数:9

結構 Bard はまともに答えてくれています。

AI への挨拶や、「ありがとう」の一言は、その後の回答内容に影響する可能性があり、それは人間同士の場合でも同じではないかと思いました。

つまり、相手を尊重して、ちゃんと挨拶してから話し始めたり、何か役に立つ回答をしてもらったら、「ありがとう」と感謝の意を述べることで、その後のコミュニケーションが円滑になる、ということです。

たかが AI と言えど、道具のように乱暴に使うべきではないということです。


♪たーかが、あ~い~


(訪問者のどんなニーズと この記事がつながるか)


2023/9/23(土)

C++ の仮想関数について

最近は、30年前のパソコンの NEC PC-9801 用の「Borland Turbo C++ 2nd」という開発環境で、C++ を勉強しています。


▼Borland Turbo C++の、「INTRODUCTION」冊子


「INTRODUCTION 第5章 C++ 入門」

  1. 「カプセル化」、
  2. 「継承(インヘリタンス)」、
  3. 「多態性」、
  4. 「オーバーロード」、
  5. 「クラスによる現実の世界のモデル化」、
  6. 「継承」

…と読み進めて、今は「仮想関数」について勉強しています。


▼「カプセル化」~「継承」まで読み…
▼今は「仮想関数」について読んでいます。


それで『C++のオブジェクト指向ってなんか変だな』とちょっと思いました。たとえば、


クラス A はメソッド 1 とメソッド2を持っている。そのメソッド 1 はメソッド 2 を呼び出している。

クラス B はクラス A を継承しており、クラス B はメソッド 2 を独自に定義して持っている(メソッド 2 をオーバーライドしている)


このとき、クラス B のインスタンスを作り、メソッド 1 を実行したとき、呼ばれるメソッド 2 は、私の思っていたのは「クラス B のオーバーライドされたメソッド 2」(下図)だったんですが、



C++ の動きは、「クラス A のメソッド 2」を呼んでいました。(下図)



▼C++ の結果 B から「継承された A の method1」を実行したら A の method2 が呼ばれてしまった。


「そうだっけ??」と思って、確認のため Java で同じクラス関係になるように同じプログラムを作って実行したら…


▼Java の結果 B から「継承された A の method1」を実行したら、ちゃんと B の method2 が呼ばれた。


やっぱり、Java のほうでは、私の期待したとおりの「ふつうの」結果となりました。


C++ では継承の関係にある2つのクラス A, B で同じメソッド 2 を定義すると、一応オーバーライドをするものの、(例外として)「クラス A のメソッド 1 を実行し、そこからメソッド 2 が呼ばれる場合」は、クラス A のメソッド 2 を呼ぶ…。となっているようです。

これが C++ にとっての「普通」なのだろうか??(30年前の C++ 製品なので、古い動きなのだろうか?)

私は現在の C++ を知らないので、何が普通なのかはわかりません。

でもなんか「論理的に正しくはこう」、という話ではなく、「物理的にその関数のコードはそうなっている」というスタンスは、どこか C 言語らしい気がします。


これの対処方法は、A のクラス宣言時の method2() の宣言で、virtual を付けて「仮想関数」にすれば、Java と同じ結果になります。

関数(メソッド)を virtual にすると、関数呼び出しと、呼び出される関数のヒモづけ(図中の赤い矢印)が、コンパイル時に行われずに、実行時に行われるそうです。

実行時に行われると、「クラス B が呼び出ししてる」という情報があるので、継承されたクラス A のメソッド 1 からクラス A のメソッド 2 は呼ばずに、クラス B のメソッド 2 を呼ぶ(選択される)ことが可能になります。

/* Online C++ Compiler and Editor */

#include <iostream>


using namespace std;


//--- クラス A ---


class A {

public:

A();

void method1();

void method2();

};

A::A( void ) {

}

void A::method1( void ) {

cout << "A.method1()\n";

method2();

}

void A::method2( void ) {

cout << "A.method2()\n";

}


//--- クラス B ---


class B : public A {

public:

B();

void method2();

};

B::B( void ) : A() {

}

void B::method2( void ) {

cout << "B.method2()\n";

}



//--- main ---


int main() {

cout << "Hello World\n";

B b;

b.method1();

return 0;

}


/* Online Java Compiler and Editor */


//--- main ---


public class HelloWorld{


public static void main(String []args){

B b = new B();


System.out.println("Hello, World!" );

b.method1();

}

}


//--- クラス A ---


class A {

A() {

}

void method1() {

System.out.println( "A.method1()" );

method2();

}

void method2() {

System.out.println( "A.method2()" );

}

}


//--- クラス B ---


class B extends A {

B() {

}

void method2() {

System.out.println( "B.method2()" );

}

}

/* Online C++ Compiler and Editor */

#include <iostream>


using namespace std;


//--- クラス A ---


class A {

public:

A();

void method1();

virtual void method2();

};

A::A( void ) {

}

void A::method1( void ) {

cout << "A.method1()\n";

method2();

}

void A::method2( void ) {

cout << "A.method2()\n";

}


//--- クラス B ---


class B : public A {

public:

B();

void method2();

};

B::B( void ) : A() {

}

void B::method2( void ) {

cout << "B.method2()\n";

}



//--- main ---


int main() {

cout << "Hello World\n";

B b;

b.method1();

return 0;

}



『C++ でのこの辺の実際はどうなのだろう』と思って、「c++ virtual」で WEB 検索をしたら、次のようなサイトがヒットしました。

やはり、"これが C++ にとっての「普通」" のようです。

ふつうと同じ動きにしたければ、その関数に virtual を付ける必要があります。


「C++勉強メモ ~仮想関数~」

https://qiita.com/ketaro-m/items/80ae54a8286c1bb610d7


ところで、Yahoo 知恵袋のプログラミングカテゴリを見ていると、ときどき、

「初心者です。C++ を勉強しようと思っています」

という発言がありますが、こんなに難しいのに大丈夫なのかな、、??と思います。


(訪問者のどんなニーズと この記事がつながるか)


2023/9/20(水)

最近このホームページは面白いものをいろいろ載せていない

RPG開発に注力

最近は RPG 開発に注力しているので、ページの更新はたまに気が向いたときにしかやっていない状態です。

以下のようなパソコン画面で、ひたすら RPG の試作品を作っています。

つくるべし!つくるべし!つくるべし!つくるべし!べしべしべし…げひょ


1本の RPG を完成させようというよりは、現状は、「RPG 用メニューの作り方」みたいなドキュメントを作っているんです。

『そのドキュメントの通りにプログラミングを進めれば、誰でも RPG のメニューシステムを作ることができる』

そこがポイントです!ポイントです!ポイントです!ポイントです!ですですです…ぐほ?

ドキュメントが不十分だと思うと、また1からドキュメントを作り直すんです。

そのドキュメントを読みながらプログラミングができるのかどうかを試すので、

メニューシステムの試作は、同じものを4回くらい作っていて、

メッセージ表示システムの試作は、同じものを2回3回と作っていて、

マップ表示システムの試作は、同じものを3度4度と作っていて、、


たとえば現状の「メニューシステムの作り方」のドキュメントはこんな感じです。   

このままだと意味不明だと思いますが、これをもっと整えると、誰でもこれを見ながら RPG をプログラムできます。


I need you, I want you..

私の本業は、ある工場に派遣されて、「金属加工」と言って、ある産業用機械製品のアルミボディにドリルで穴をあける仕事をしています。

私がドリルで穴をあけるのではなく、FANUC(ファナック)という工場によくある機械がプログラムに従って自動的に穴をあけてくれます。

私はその機械にアルミ材料をセットして、スイッチを入れるだけです。

でも、加工が終わって出てきたら洗うとか、他にいろいろやることがあるので大変です…。


その作業場では、室内で音楽が放送されていて、

♪I need you, I want you, I love you ~

とか少女たちの唄声が天井の社内放送のスピーカーから聞こえてきます。

良い曲だなと思って、その I need you, ... のフレーズを覚えておいて、自宅に帰宅してからそのフレーズを WEB 検索して、それが AKB48 の「ヘビーローテーション」だと分かりました。(私はそれまで知らなかった)

そして iTunes で検索して1曲ダウンロード購入して今聴いてます。

…だからなんだって?

”最近このホームページは面白いものをいろいろ載せていない”

ということで、ちょっと色のある話をしているんですわ~

色と言えば、同じように室内で流れていた曲で、しょこたんの「空色デイズ」も1曲ダウンロード購入しました。



なんで仕事に従事するはずの室内で音楽が流れているのかと言うと、私は派遣でそこにいるだけなので知らないのですが、その会社は音楽に限らず、頭髪の色も金髪だったりビビッドな青だったりして、結構自由です。

「ちゃんと仕事ができるなら、きびしいことは言わない」

という方針だからだと思います。

こういう合理的な方針は大企業によく見られ、逆に中堅企業は規律を重視していて めちゃんこ 厳しかったりします。

まぁ、会社によるかもしれませんが。。

3時間ぐらいずっと中島みゆきが作業場に流れていることもあり、たぶんだれかが好きで流しているんでしょうね。

中島みゆきの曲については、私は若いころによく聴いていたので、

「ああ、『アザミ嬢のララバイ』ね」とか

「たかが愛、瞬きもせず、あした、、」という感じで、

かなりマイナーな曲でも題名を言えたりします。


(訪問者のどんなニーズと この記事がつながるか)


2023/9/9(土)

ゲーム音楽「オリジナル・サウンドトラック XANADU NEXT」

日本のパソコンゲームソフトの歴史の中で一番売れたゲームソフトは、日本ファルコムの「ザナドゥ」という ARPG で、売れた数は 40万個だったそうです。

1985年 に発売されたので、もう 38年ものあいだナンバーワン記録を破られていないことになります。

ザナドゥ for X1(XANADU / 80's Japanese old pc game)(youTube動画)

こういうゲームをみんな買っていたんですねぇ…


この記事のもくじ

  1. XANADU 系統図
  2. 曲のトップテン
  3. 「ザナドゥ」という言葉の意味


XANADU 系統図

XANADU は続編やらリメイクやらが多いので、系統をまとめました。

この図を見ると、ファミコンなどのゲーム機(コンシューマー機)ではザナドゥらしいザナドゥは一度も発売されていないんですね。

今回購入したサウンドトラックは、2005年発売の続編、「XANADU NEXT」のゲーム音楽です。(上図オレンジ部)

PSG 音源でもなく、FM 音源でもない、自然音(オーケストラ)のゲーム音楽ですが、心に響きました。


曲のトップテン

テンじゃなくてトップスリーなんですけど、下図の赤枠のとおり、7、18、11曲目が私が高評価を入れた曲です。

興味のある方は iTunes のプレビューで聴いてみてください。

なお、曲名でたくさん出てくる「LA VALSE POUR XANADU」(ラ・バルセ・ポゥ・ザナドゥ)を Google翻訳してみたら、

フランス語で、「ザナドゥのためのワルツ」だそうです。


「ザナドゥ」という言葉の意味

ところで、「ザナドゥ」という言葉は、国語辞典で引くと、「田園美 豊かな土地、桃源郷」という意味となっています。

Wikipedia の説明では、モンゴル帝国の皇帝フビライ・ハンが築いた上都(Shàngdū)を訪問したマルコ・ポーロが「東方見聞録」に上都を記録して、それで上都はヨーロッパに知られることになったと書かれています。

また、西洋では上都を Xanadu あるいは Xanadumoo、Zanadu、Shangdu と呼んだとのことで、ザナドゥという言葉はもともとは「モンゴル帝国の"上都"」だったようです。それをイギリスの詩人が「歓楽の都」として歌って以来、ザナドゥという言葉は幻想的な名前として使われるようになったのだそうです。

▼黄色で示した場所が上都、ザナドゥ。

世界遺産 - Site of Xanadu

話でしか知ることのできない遠方の土地に想い焦がれたのでしょうね。

「ザナドゥ」という言葉は、キサナドゥ、キサナドーとも読み、少女漫画の「僕の地球を守って」の主人公が歌う歌の曲名にもなっています。桃源郷について歌っていたんですね。

また、Windows を作ったビル・ゲイツの家の名前が「Xanadu 2.0」と命名されているそうです。桃源郷なお宅。

さらには、漫画「パタリロ」では「ザナドゥー」という名前の芸人が登場します。

…桃源郷(俗界を離れた別世界。仙境。理想郷)という意味で、幻想的な名前なので、さまざまな場所で名称として使われています。


最後に、

4Gamer.net のゲーム・レビュー

「ザナドゥ」の名を冠するも新しく生まれ変わったアクションRPG ザナドゥ・ネクスト

実は私、XANADU も、XANADU NEXT も遊んだことないです。

音楽だけ聴いています。


(訪問者のどんなニーズと この記事がつながるか)